package com.team.party.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.team.party.bean.Activity;
import com.team.party.bean.Society;
import com.team.party.bean.Student;

/**
 * 账户管理
 * @author sunlekang
 * 2018/11/4
 */

public interface StudentService {
	/**
	 * 查找学生
	 * @param username 账号
	 * @throws Exception 
	 */
	public Student serchStudent(String username) throws Exception;
	
	
	/**
	 * 学生注册
	 * @param stu_name 姓名
	 * @param stu_sex 性别
	 * @param stu_age 年龄
	 * @param stu_no 学生号
	 * @param stu_username 账号
	 * @param stu_password 密码
	 * @param stu_tel 电话
	 * @param stu_form 年级
	 * @param stu_scho 学院
	 * @return boolean
	 * @throws Exception 
	 */
	public Boolean register(String stu_name, String stu_sex, int stu_age, String stu_no, String stu_username, String stu_password, String stu_tel, String stu_form, String stu_scho) throws Exception;
	
	
    /**
     * 学生注销
     */
    public void logout();
    
    
    /**
     * 通过学生学号，查出学生全部信息
     * @param: stu_no 该学生的学号
     * @return:Student 
     * @throws Exception 
     */
    public Student serchMessage(String stu_no) throws Exception;

    
    /**
     * 通过学生学号，修改学生信息
     * 允许修改：姓名、性别、年龄、电话、年级、学院
	 * @param stu_name 姓名
	 * @param stu_sex 性别
	 * @param stu_age 年龄
	 * @param stu_tel 电话
	 * @param stu_form 年级
	 * @param stu_scho 学院
	 * @param stu_no 学号
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean changeMessage(String stu_name, String stu_sex, int stu_age, String stu_tel, String stu_form, String stu_scho, String stu_no) throws Exception;
    
    
    /**
     * 修改密码
	 * @param stu_no 学号
	 * @param stu_password 密码
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean changePassword(String stu_no, String stu_password) throws Exception;
    
    
    /**
     * 查看所有社团
     * @return:List<Society>
     * @throws Exception 
     */
    public List<Society> serchSociety() throws Exception;
    
    
    /**
     * 加入社团
	 * @param stu_no 学号
	 * @param soc_no 社团号
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean joinSociety(String stu_no, String soc_no) throws Exception;
    
    
    /**
     * 查看该学生加入的社团
     * @param stu_no 学号
     * @return:List<Society>
     * @throws Exception 
     */
    public List<Society> serchJoinedSociety(String stu_no) throws Exception;
    
    
    /**
     * 退出社团
     * @param stu_no 学号
     * @param soc_no 退出的社团号
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean exitSociety(String stu_no, String soc_no) throws Exception;
    
    
    /**
     * 查找所有活动
     * @return:List<Activity>
     * @throws Exception 
     */
    public List<Activity> serchActivity() throws Exception;
    
    
    /**
     * 加入活动
     * @param stu_no 学号
     * @param act_no 活动号
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean joinActivity(String stu_no, String act_no) throws Exception;
    
    
    /**
     * 查询加入的活动
     * @param stu_no 学号
     * @return:List<Activity>
     * @throws Exception 
     */
    public List<Activity> serchJoinedActivity(String stu_no) throws Exception;
    
    
    /**
     * 查询加入的活动
     * @param stu_no 学号
     * @param act_no 活动号
     * @return:Boolean
     * @throws Exception 
     */
    public Boolean exitActivity(String stu_no, String act_no) throws Exception;
    
    /**
     *  通过社团号、社团名模糊查找社团
     * @param soc_no 社团号
     * @param soc_name 社团名
     * @return List<Society>
     * @throws Exception
     */
    public List<Society> serchSocietyByFuzzy(String soc_no, String soc_name) throws Exception;
	
    /**
     *  通过活动号、活动名模糊查找活动
     * @param act_no
     * @param act_name
     * @return List<Activity>
     * @throws Exception
     */
	public List<Activity> serchActivityByFuzzy(String act_no, String act_name) throws Exception;
} 